package control.construirEdificio;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import excepcionesGenerales.ExcepImposibleEjecutar;
import excepcionesJugador.ExcepSinFondos;
import excepcionesRegion.ExcepRegionNoConquistada;

import juego.Juego;
import jugadores.Jugador;

import vista.VistaConstruirEdificio;

/**
 * @author Grupo 2, Algoritmos y programacion 3, Catedra Fontela<br>1er cuat 2007    
 * <br>Esta clase se encarga de controlar el boton construir, de la vista constructora de edificios.
 */

public class BotonConstruirListener implements ActionListener {
	
	private VistaConstruirEdificio vista; //Referencia a la vista de construccion
	private ProductoEdificio producto; //Producto a comprar
	private Jugador jugadorActual; //Vector que contiene la referencia al jugador actual
	
	/**
	 * Inicializa el controlador
	 * @param vista VistaConstruirEdificio a controlar
	 */
	public BotonConstruirListener(VistaConstruirEdificio vista){
		this.vista = vista;
	}
	
	/**
	 * Define que realizar, cuando se acciona el boton
	 */
	public void actionPerformed(ActionEvent arg0) {
		this.jugadorActual = Juego.getInstance().getRonda().getTurnoActual().getJugador();
		//Obtengo el producto a comprar
		try{
			producto = (ProductoEdificio)vista.getPrimeroLista1();
			//Compro el producto
			producto.Comprar(jugadorActual, vista.getRegion());
		} catch (NullPointerException e){
			JOptionPane.showMessageDialog(vista, "Error en la compra");
		}
		catch (ClassCastException e2){
			JOptionPane.showMessageDialog(vista, "Error en la compra");
		}
		catch (ExcepSinFondos e3){
			JOptionPane.showMessageDialog(vista, "Sin fondos suficientes");
		}
		catch (ExcepRegionNoConquistada e4){
			JOptionPane.showMessageDialog(vista, "Esa region no es de tu civilizacion");
		}
		catch (ExcepImposibleEjecutar e5){
			JOptionPane.showMessageDialog(vista, "Imposible ejecutar la compra");
		}
	}
}
